package gdconf

import (
	"server_cluster/common/logger"
)

// 装备等级配置表

type EquipLevelConfig struct {
	Id           int32         `csv:"Id" gorm:"primary_key;autoIncrement:false"` // 装备等级id
	LevelGroup   int32         `csv:"IntensifyGroup,omitempty"`                  // 等级组
	Level        int32         `csv:"Intensify,omitempty"`                       // 等级
	Exp          int32         `csv:"Experience,omitempty"`                      // 需要经验
	FightPropAdd *FightPropAdd `csv:"Attribute,omitempty"`                       // 增加战斗属性
}

func (e *EquipLevelConfig) TableName() string {
	return "config_equip_level"
}

func (g *GameDataConfig) saveEquipLevelConfig() {
	saveTableToDb[EquipLevelConfig](g.Db, readTable[EquipLevelConfig](g.CsvPathPrefix+"equip_level.csv"))
}

func (g *GameDataConfig) loadEquipLevelConfig() {
	g.GameDataMaps.EquipLevelConfigMap = make(map[int32]*EquipLevelConfig)
	for _, equipLevelConfig := range loadTableFromDb[EquipLevelConfig](g.Db) {
		g.GameDataMaps.EquipLevelConfigMap[equipLevelConfig.Id] = equipLevelConfig
	}
	logger.Info("EquipLevelConfig Count: %v", len(g.GameDataMaps.EquipLevelConfigMap))
}

func GetEquipLevelConfig(id int32) *EquipLevelConfig {
	value, exist := CONF.GameDataMaps.EquipLevelConfigMap[id]
	if !exist {
		logger.Error("[ConfigNotFound] EquipLevelConfig, id: %v", id)
		return nil
	}
	return value
}

func GetEquipLevelConfigMap() map[int32]*EquipLevelConfig {
	return CONF.GameDataMaps.EquipLevelConfigMap
}

func GetConfigEquipLevelByGroupAndLevel(group int32, level int32) *EquipLevelConfig {
	for _, equipLevelConfig := range CONF.GameDataMaps.EquipLevelConfigMap {
		if equipLevelConfig.LevelGroup == group && equipLevelConfig.Level == level {
			return equipLevelConfig
		}
	}
	return nil
}
